<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>

        /*
         访问器属性不能直接定义，必须使用Object.defineProperty()来定义。
         */
//        var book = {
//            _year: 2018,  // 带下划线的属性表示只能通过对象方法访问的属性
//            edition: 1
//        };
      //  alert(book._year);
//        Object.defineProperty(book, 'year', {
//            get: function () {
//                return this._year;
//            },
//            set: function (newValue) {
//                if (newValue > 2018) {
//                    this._year = newValue;
//                    this.edition += newValue - 2018;
//                }
//            }
//        });
//
//        book.year = 2019;
//        console.log(book.edition);  // 为 2
//////////////////////////////////////////////////////////////////////////////////
        //定义多个属性
        var book = {
            edition:1
        };

        Object.defineProperties(book, {
            // 带下划线的属性表示只能通过对象方法访问的属性
            _year: {
                value: 2018
            },
//            edition: {
//                Writable:true,
//                value: 1
//            },
            year: {
                get: function () {
                    return this._year;
                },
                set: function (newValue) {
                    if (newValue > 2018) {
                        this._year = newValue;
                        this.edition += newValue - 2018;
                    }
                }
            }
        });
        console.log("book.year:"+book.year)
        book.year = 2020;
        console.log(book.edition);  // 为 2

    </script>
</head>
<body>
    访问器
</body>
</html>